package a11_MoneyChange;

import java.util.Scanner;
import java.util.SplittableRandom;

/**
 * @Author quan
 * @Description 参考答案解法
 * @Date 2023/1/31 11:27
 */
public class Answer {
    public static void main(String[] args) {
        //1、键盘录入一个金额
        Scanner sc = new Scanner(System.in);
        int money;
        while (true) {
            System.out.println("请输入一个金额：");
            money = sc.nextInt();
            //安全校验 数额
            if (money >= 0 && money <= 9999999) {
                break;
            } else {
                System.out.println("金额无效");
                continue;
            }
        }

        //定义一个变量用来表示获取到的中文大写钱
        String moneyStr = "";
        //2、得到money中的每一位数字,再转为中文
        while (true){//123
            //从右往左获取数据：因为右侧是数据的个位
            int ge = money%10;
            //调用方法 大写中文
            String CapitalNum = getCapitalNum(ge);
            //将每次获取到的 大写中文钱 进行拼接
//            错误写法：moneyStr = moneyStr + CapitalNum;
            //“” +“伍” =“伍” 第一次循环
            //“” +“叁” =“叁” 第二次循环。。。因此获得的数字是反过来的
            moneyStr = CapitalNum + moneyStr;//正确写法

            //去掉刚刚获取的数据
            money = money/10; //12
            //如果数字上的每一位都获取到了，则说明money为0,此时结束循环
            if(money == 0){
                break;
            }
        }
//        System.out.println(moneyStr);

        //3、在前面补0，补足7位
        int count = 7- moneyStr.length();
        for (int i = 0; i < count; i++) {
            moneyStr = "零"+ moneyStr;
        }
        System.out.println(moneyStr);
        //4、插入单位（查表法）
        //定义一个数组表示单位
        String[] arr = {"佰","拾","万","仟","佰","拾","元"};
        //遍历moneyStr，依次得到 零 零 贰 壹 叁 伍 ,将arr的值插入进去即可
        String res = "";
        for (int i = 0; i < moneyStr.length(); i++) {
            //打印零 零 贰 壹 叁 伍
            char c = moneyStr.charAt(i);
            //打印单位arr[i]
            //将大写数字和单位两者进行拼接 零 佰
            res = res+ c + arr[i];
        }
        //打印最终结果
        System.out.println(res);
    }

    //定义一个方法将数字变成大写中文
    public static String getCapitalNum(int num){
        //定义数组，让数字和大写中文产生对应关系
        String[] arr = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
        //返回结果
        return arr[num];
    }
}
